<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8"%>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>角色管理</title>
  <link rel="stylesheet" type="text/css" href="<%=path %>/style/easyui.css">
  <link rel="stylesheet" type="text/css" href="<%=path %>/style/icon.css">
  <link rel="stylesheet" type="text/css" href="<%=path %>/style/neweasyui/themes/gray/panel.css">
  <link rel="stylesheet" type="text/css" href="<%=path %>/style/neweasyui/themes/gray/window.css">
  
  <link rel="stylesheet" type="text/css" href="<%=path %>/script/zTree_v3/css/zTreeStyle/zTreeStyle.css" >
  <link rel="stylesheet" type="text/css" href="<%=path %>/script/zTree_v3/css/demo.css" >
  
  <script type="text/javascript" src="<%=path %>/script/1.11.1.js"></script>
  <script type="text/javascript" src="<%=path %>/script/jquery.easyui.min.js"></script>
  <script type="text/javascript" src="<%=path %>/script/jquery.easyui.min.js"></script>
  <script type="text/javascript" src="<%=path %>/script/easyui-lang-zh_CN.js"></script>
  <script type="text/javascript" src="<%=path %>/script/dateFormat.js"></script>
  <script type="text/javascript" src="<%=path %>/script/datagrid-bufferview.js"></script>
  <script type="text/javascript" src="<%=path %>/script/common.js"></script>
  <script type="text/javascript" src="<%=path %>/script/ckeditor/ckeditor.js"></script>
  
   <script type="text/javascript" src="<%=path %>/script/zTree_v3/js/jquery.ztree.core-3.5.js"></script>  
  <script type="text/javascript" src="<%=path %>/script/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>  
  <script type="text/javascript" src="<%=path %>/script/zTree_v3/js/jquery.ztree.exedit-3.5.js"></script> 
  <style type="text/css">
    #fm{
      margin:0;
      padding:10px 30px;
    }
    .ftitle{
      font-size:14px;
      font-weight:bold;
      padding:5px 0;
      margin-bottom:10px;
      border-bottom:1px solid #ccc;
    }
    .fitem{
      margin-bottom:17px;
    }
    .fitem label{
      display:inline-block;
      width:80px;
    }
    .fitem input{
      width:230px;
    }
  </style>
</head>
<body>
<table id="tt" title="class" style="width:auto;height:830px">
</table>
<!-----------------------------------------------------------------按钮------------------------------------------------------------------->
<div id="toolbar" style="padding:5px;height:auto">
  <div>
  	<!--   父ID：<input id="parentId"  name="parentId" type="text" class="easyui-numberbox" style="width:150px" validType="length[0,10]" missingMessage="必须为数字" />&nbsp;&nbsp;
  	 权限名称：<input id="rightName"  name="rightName" type="text" class="easyui-textbox" validType="length[0,10]" style="width:150px" />&nbsp;&nbsp;
    <a href="javascript:void(0)"  class="easyui-linkbutton" iconCls="icon-search" onclick="searchSentence()">查询</a>-->
  
    <!-- 搜索条件结束 -->
    <a href="javascript:void(0)"  class="easyui-linkbutton" iconCls="icon-add" onclick="addAd()">添加</a>&nbsp;
    <a href="javascript:void(0)"  class="easyui-linkbutton" iconCls="icon-edit" onclick="editClass()">修改</a>&nbsp;
    <a href="javascript:void(0)"  class="easyui-linkbutton" iconCls="icon-remove" onclick="deleteClass()">删除</a>&nbsp;&nbsp;
    <a href="javascript:void(0)"  class="easyui-linkbutton" iconCls="icon-add" onclick="grantAutority()">授权</a>&nbsp;&nbsp;
    

  </div>
</div>
<!-------------------------------------------------------------添加/编辑框 开始----------------------------------------------------------------------->
<!-- 添加/编辑框 开始-->
<div id="addad" class="easyui-dialog"
     style="width: 800px; height: 400px; padding: 10px 20px;"  closed="true"
     buttons="#dlg-buttons">
  <div class="ftitle">角色</div>
  <form id="inAddAd" method="post"  validate enctype="multipart/form-data">
    <input type="hidden" name="id" id="cls_id" />
    <div class="fitem">
      <label>角色名称:</label>
      <input  class="easyui-textbox" name="roleName" id="roleName" value=""  validate required validType="length[0,64]"/>
    </div>
    <div class="fitem">
      <label>描述:</label>
      <textarea  rows="3" cols="10"  style="width: 80%" class="textarea easyui-validatebox" id="description" name="description" validate validType="length[0,200]"></textarea>
    </div>
    
  </form>
  <div id="dlg-buttons">
    <a href="javascript:void(0)" class="easyui-linkbutton c6"  iconCls="icon-ok" onclick="saveOrUpdateAd()" style="width: 90px">Save</a> 
    <a href="javascript:void(0)" class="easyui-linkbutton"  iconCls="icon-cancel" onclick="closeDialog()" style="width: 90px">Cancel</a>
  </div>
</div>
<!------------------------------------------------------------------------------------------------------------------------------------>

<!-- 添加/编辑框结束-->
<!-- 授权窗口 -->
<div id="autority" class="easyui-dialog"
     style="width: 800px; height: 850px; padding: 10px 20px;"   closed="true"
     buttons="#dlg-buttons2">
  <div class="ftitle">授权</div>
    <div id="autorityName" class="fitem">
    	<input id="roleId" type="hidden" />
    </div>
    <div class="fitem">
    	<ul id="demo" class="ztree" style="height:620px;border:1px #000 solid;overflow:auto;"></ul>
    </div>
    
  <div id="dlg-buttons2">
    <a href="javascript:void(0)" class="easyui-linkbutton c6"  iconCls="icon-ok" onclick="saveAutority()" style="width: 90px">Save</a> 
    <a href="javascript:void(0)" class="easyui-linkbutton"  iconCls="icon-cancel" onclick="closeDialogAutority()" style="width: 90px">Cancel</a>
  </div>
</div>



</body>
<script type="text/javascript">
function formatDate(date){
	var y = date.getFullYear();
	var m = date.getMonth()+1;
	var d = date.getDate();
	var h = date.getHours();
	var min = date.getMinutes();
	var s = date.getSeconds();
	var str = y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d)+' '+(h<10?('0'+h):h)+':'+(min<10?('0'+min):min)+':'+(s<10?('0'+s):s);
	return str;
}
  $.ajaxSetup({cache:false,async:false});
  $(function(){
    $('#tt').datagrid({
      url:'<%=basePath %>authority/role/findall',
      method:'get',
      singleSelect:true,toolbar:'#toolbar',remoteSort:false,pageSize:50,nowrap:false,
      fitColumns:true,pagination:false,rownumbers:true,
      columns:[[
        {field:'id',title:'ID',sortable:true,width:20,hidden:true},
        {field:'roleName',title:'角色名称',sortable:true,width:200},
        {field:'genTime',title:'创建时间',sortable:true,width:200,formatter:function(value,row,index){
        	return formatDate(new Date(value));
        	
        }},
        {field:'updateTime',title:'跟新时间',sortable:true,width:200,formatter:function(value,row,index){
        	return formatDate(new Date(value));
        	
        }},
        {field:'description',title:'描述',sortable:true,width:37},
      ]],
    
    });
  });
//------------------------------------------------------------------------------------------
  //关闭弹出框
  function closeDialog(){
    $('#addad').dialog('close') ;
  }
  function closeDialogAutority(){
    $('#autority').dialog('close') ;
  }

  //添加角色
  function addAd(){
    $('#addad').dialog('open').dialog('setTitle','添加角色');
    $('#inAddAd').form('clear');
    url = '<%=basePath%>authority/role/add';
  }
  //修改角色
  function editClass(){
    url = '<%=basePath%>authority/role/edit';
    var row = $('#tt').datagrid('getSelected');
    if (row){
      $("#cls_id").val(row.id);
      $("#roleName").val(row.roleName);
      $("#description").val(row.description);
      $('#addad').dialog('open').dialog('setTitle','编辑角色');
      $('#inAddAd').form('load',row);
    }
  }


  function deleteClass(){

    var row = $('#tt').datagrid('getSelected');
    if (row){
      $.messager.confirm('提示','确定要删除这个角色吗？',function(r){
        if (r){
          $.post('<%=basePath%>authority/role/deleteone',{id:row.id},function(result){
        	if(result.status == -2){
        		$.messager.alert("提示","此角色被使用,不能删除");
        	}
            $('#tt').datagrid('reload');    // reload the data
          },'json');
        }
      });
    }
  }
//---------------------------------------------------------------------------------------------------------------------------
  //添加或修改角色
  function saveOrUpdateAd(){

    $('#inAddAd').form('submit', {
      url : url,
      onSubmit : function() {
        return $(this).form('validate');
      },
      success : function(result) {
    	var Data = eval('(' + result + ')');   	  
        if (result.status) {
          $.messager.show({
            title : 'Error',
            msg : '服务器出错，请稍后再试'
          });
        }else if(Data.status == '-1'){
        	$.messager.show({
                title : '提示',
                msg : '此时有正在活动的角色,请先调整'
              });
        	return;
        }else if(Data.status == '-2'){
        	$.messager.show({
                title : '提示',
                msg : '角色名称不能重复'
              });
        	return;
        	
        }else {
          $('#addad').dialog('close'); // close the dialog
          $('#tt').datagrid('reload'); // reload the data
        }
      }
    });
  }
	//保存 角色权限关系
	function saveAutority(){
		var nodes = treeObj.getNodes();
		var nodes2 = treeObj.transformToArray(nodes);
		var rightIds = new Array();
		for(var i=0;i<nodes2.length;i++){
			var b = nodes2[i].checked;
			if(b==true || b == "true"){
				rightIds.push(nodes2[i].id);
			}
		}
		$.post("<%=basePath %>authority/role/saveRoleRight",{"roleId":row.id,"rightIds":rightIds.toString()},function(data){
			$.messager.alert("提示","权限添加成功");
			$('#autority').dialog('close') ;
			$('#tt').datagrid('reload');
		});
		
	}


  function searchSentence(){
	  var parentId = $("#parentId").textbox("getValue");
	  var rightName = $("#rightName").textbox("getValue");
		 var url = '<%=basePath %>sentence/listAll?parentId='+parentId+'&rightName='+rightName;
		 url =encodeURI(encodeURI(url));
		 $("#tt").datagrid({
			 url:url,
			 method:'get',
			 onLoadSuccess:function(data){
				 if(data.total == null){
					 $.messager.alert("提示","没有查询到任何符合条件的数据")
				 }
			 }
		 });
  }
  /*
  *  授权
  */
  function grantAutority(){
	 row = $('#tt').datagrid('getSelected');
	 if(row){
		$("#roleId").val(row.id);
		$("#autorityName").html(row.roleName);
		$("#autority").dialog("open").dialog("setTitle","授权");
	 }else{
		 $.messager.alert("提示","请选择角色");
		 return;
	 }
	 //获取所有RoleRight的对应关系
	 
	 rData = new Array();
	 $.post("<%=basePath %>authority/role/getRoleRight",{"roleId":row.id},function(data){
			 rData = data;
	 });
	 //组织一棵树
	 $.ajax({
	        type: "GET",
	        dataType: "json",
	        traditional: true,
	        url: "<%=basePath %>authority/left/tree",
	        async: false,//表示同步执行
	        success: function (data, textStatus) {
	            if (data != null) {
	                 treeObj = $.fn.zTree.init($("#demo"), setting, data);
	                //回显 权限
	                var nodes = treeObj.getNodes();
	    		    var nodes2 = treeObj.transformToArray(nodes);
	 				for(var i=0;i<nodes2.length;i++){
	    				if(rData != null){
	    					for(var j=0;j<rData.length;j++){
			    				if(nodes2[i].id == rData[j].rightId){
			    					treeObj.checkNode(nodes2[i]);
			    				}
	    					}
	    				}
	 				}
	    		    	
	    		    //展开节点和判断
	                treeObj.expandAll(true);
	                setCheck();
	    			$("#py").bind("change", setCheck);
	    			$("#sy").bind("change", setCheck);
	    			$("#pn").bind("change", setCheck);
	    			$("#sn").bind("change", setCheck);
	    			
	            }
	        },
	        complete: function (XMLHttpRequest, textStatus) { },
	        error: function (e) {
	            alert("获取测试类型统计数据失败，请刷新页面重新加载！");
	        }
	    });
	 url = "<%=basePath %>authority/role/saveRoleRight";
  }
  //组织一棵异步树
	var setting = {
		check: {
			enable: true
		},
		data: {
			simpleData: {
				enable: true
			}
		}
	};
	var code;
	
	function setCheck() {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
		py = $("#py").attr("checked")? "p":"",
		sy = $("#sy").attr("checked")? "s":"",
		pn = $("#pn").attr("checked")? "p":"",
		sn = $("#sn").attr("checked")? "s":"",
		type = { "Y":py + sy, "N":pn + sn};
		zTree.setting.check.chkboxType = type;
		showCode('setting.check.chkboxType = { "Y" : "' + type.Y + '", "N" : "' + type.N + '" };');
	}
	function showCode(str) {
		if (!code) code = $("#code");
		code.empty();
		code.append("<li>"+str+"</li>");
	}

</script>
</html>
